﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;
using System.IO;

namespace ECOSYSTEMPRESENTACION
{
    public partial class frmConsultarPrecio : Form
    {
        public frmConsultarPrecio()
        {
            InitializeComponent();
        }
        TemporalBL elTemporalBL = new TemporalBL();
        AlmacenBL elAlmacenBL = new AlmacenBL();
        ProductoBL elProductoBL = new ProductoBL();
        List<Temporal> lista;
        Double TasaCambio, IGV, Cambio=0;
        String monedaVenta;
        public void ObtenerTCambio()
        {
            lista = elTemporalBL.ObtenerActualesDatos();
            foreach (Temporal fila in lista)
            {
                TasaCambio = fila.TasaCambio;
                IGV = fila.IGV;
                monedaVenta = fila.MonedaVentas.ToString();
            }
        }
        private void CargarListaProductos() {
            if (dgvListaProductos.DataSource == null) {
                dgvListaProductos.DataSource = elAlmacenBL.ObtenerAllProductos();
                filtrador.DataSource = elAlmacenBL.ObtenerAllProductos();
            }
        }
        private void AplicarFiltro()
        {
            int ret = filtrar_dgvListaProducto("Producto", txtFiltrar.Text.Trim(), filtrador, dgvListaProductos);

            if (ret == 0)
            {
                txtFiltrar.BackColor = Color.Red;
            }
            else
            {
                txtFiltrar.BackColor = Color.White;
            }

        }
        private int filtrar_dgvListaProducto(String Columna, String texto, BindingSource Binding, DataGridView data)
        {
            if (filtrador.DataSource == null) { return 0; }
            try
            {
                String filtro = String.Empty;
                filtro = "LIKE '%" + texto.Trim() + "%'";
                if (filtro != String.Empty)
                {
                    filtro = "[" + Columna + "]" + filtro;
                }
                Binding.Filter = filtro;
                data.DataSource = Binding.DataSource;
                return Binding.Count;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return 0;
        }
        private void ObtenerPorMoneda(Double Monto)
        {
            Cambio = Monto;
            if (monedaVenta == "SOLES")
            {
                cbCambioMoneda.Text = "Mostrar en $   : ";
                lblPrecioP.Text = String.Format("{0:C}", Monto);
            }
            else {
                cbCambioMoneda.Text = "Mostrar en S/. : ";
                lblPrecioP.Text = String.Format("{0:$ #,##0.00}",Monto);
            }
        }
        // --> EVENTOS <--

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frmConsultarPrecio_Load(object sender, EventArgs e)
        {
            try
            {
                ObtenerTCambio();
                CargarListaProductos();
                txtFiltrar.Select();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void dgvListaProductos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                Int32 nroFila = Int32.Parse(e.RowIndex.ToString());
                lblProducto.Text = Convert.ToString(dgvListaProductos["Producto", nroFila].Value);
                Double Monto = Convert.ToDouble(dgvListaProductos["Precio Venta",nroFila].Value);
                ObtenerPorMoneda(Monto);
                List<Producto> lista;
                lista = elProductoBL.ObtenerImagenProducto(Convert.ToInt32(dgvListaProductos["ProductoID", nroFila].Value));
                foreach (Producto filas in lista)
                {
                    Byte[] data = (Byte[])(filas.Imagen);
                    Stream ima = new MemoryStream(data);
                    this.pbProducto.Image = Image.FromStream(ima);
                }
                cbCambioMoneda.Checked = false;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void txtFiltrar_TextChanged(object sender, EventArgs e)
        {
            try
            {
                AplicarFiltro();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        private void dgvListaProductos_CellEnter(object sender, DataGridViewCellEventArgs e)
        {            
            try
            {
                Int32 nroFila = Int32.Parse(e.RowIndex.ToString());
                lblProducto.Text = Convert.ToString(dgvListaProductos["Producto", nroFila].Value);
                Double Monto = Convert.ToDouble(dgvListaProductos["Precio Venta", nroFila].Value);
                ObtenerPorMoneda(Monto);
                List<Producto> lista;
                lista = elProductoBL.ObtenerImagenProducto(Convert.ToInt32(dgvListaProductos["ProductoID", nroFila].Value));
                foreach (Producto filas in lista)
                {
                    Byte[] data = (Byte[])(filas.Imagen);
                    Stream ima = new MemoryStream(data);
                    this.pbProducto.Image = Image.FromStream(ima);
                }
                cbCambioMoneda.Checked = false;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cbCambioMoneda_CheckedChanged(object sender, EventArgs e)
        {
            if (monedaVenta == "SOLES" && cbCambioMoneda.Checked == true ) 
                lblPrecioP.Text = String.Format("{0:$ #,##0.00}",Cambio/TasaCambio);
            if(monedaVenta != "SOLES" && cbCambioMoneda.Checked == true)
                lblPrecioP.Text = String.Format("{0:C}", Cambio/TasaCambio);
            if(monedaVenta =="SOLES" && cbCambioMoneda.Checked == false)
                lblPrecioP.Text = String.Format("{0:C}", Cambio);
            if(monedaVenta != "SOLES" && cbCambioMoneda.Checked == false)
                lblPrecioP.Text = String.Format("{0:$ #,##0.00}", Cambio / TasaCambio);
        }
    }
}
